﻿//https://github.com/adeelejaz/jquery-image-resize.git

(function ($) {

    $.fn.aeImageResize = function (params) {

        var aspectRatio = 0
        // Nasty I know but it's done only once, so not too bad I guess
        // Alternate suggestions welcome :)
      , isIE6 = $.browser.msie && (6 == ~ ~$.browser.version)
      ;

        // We cannot do much unless we have one of these
        if (!params.height && !params.width) {
            return this;
        }

        // Calculate aspect ratio now, if possible
        if (params.height && params.width) {
            aspectRatio = params.width / params.height;
        }

        // Attach handler to load
        // Handler is executed just once per element
        // Load event required for Webkit browsers
        return this.one("load", function () {

            // Remove all attributes and CSS rules
            this.removeAttribute("height");
            this.removeAttribute("width");
            this.style.height = this.style.width = "";

            var imgHeight = this.height
        , imgWidth = this.width
        , imgAspectRatio = imgWidth / imgHeight
        , bxHeight = params.height
        , bxWidth = params.width
        , bxAspectRatio = aspectRatio;

            // Work the magic!
            // If one parameter is missing, we just force calculate it
            if (!bxAspectRatio) {
                if (bxHeight) {
                    bxAspectRatio = imgAspectRatio + 1;
                } else {
                    bxAspectRatio = imgAspectRatio - 1;
                }
            }

            // Only resize the images that need resizing
            if ((bxHeight && imgHeight > bxHeight) || (bxWidth && imgWidth > bxWidth)) {

                if (imgAspectRatio > bxAspectRatio) {
                    bxHeight = ~ ~(imgHeight / imgWidth * bxWidth);
                } else {
                    bxWidth = ~ ~(imgWidth / imgHeight * bxHeight);
                }

                this.height = bxHeight;
                this.width = bxWidth;
            }
        })
    .each(function () {

        // Trigger load event (for Gecko and MSIE)
        if (this.complete || isIE6) {
            $(this).trigger("load");
        }
    });
    };
})(jQuery);